<template>
  <div class="person">
    姓：<input type="text" v-model="firstName">
    <br>
    名：<input type="text" v-model="lastName">
    <br>
    <button @click="changeFullName">将全名改为li-si</button>
    <br>
    全名：<span>{{ fullName }}</span>
  </div>
</template>


<script lang="ts" setup name="Person">
import { ref, computed } from 'vue'


let firstName = ref('zhang')
let lastName = ref('san')

// 计算属性有缓存的，只调一次,并且是只读的
// let fullName = computed(() => {
//   return firstName.value.slice(0, 1).toUpperCase() + firstName.value.slice(1) + lastName.value
// })

// 计算属性有缓存的，只调一次，可读可写
let fullName = computed({
  get() {
    return  firstName.value.slice(0, 1).toUpperCase() + firstName.value.slice(1) + lastName.value
  },
  set(val) {
    const [str1, str2] = val.split('-')
    firstName.value=str1
    lastName.value=str2
    console.log('set',val);
  }
})

function changeFullName() {
  fullName.value='li-si'

  console.log(fullName);
  
}



</script>


<style scoped>
.person {
  background-color: rgb(218, 114, 200);
  box-shadow: 0 010px;
  border-radius: 10px;
  padding: 20px;
}

button {
  background-color: darkseagreen;
  margin: 0 5px;
}

li {
  font-size: 20px;
}
</style>